/* type:Point|LineString|Circle|Polygon */
/* Square|Box(矩形) */
class Draw {
  static createDraw({ type = 'Point', source, callback }) {
    var maxPoints = null
    var geometryFunction = null
    if (type == 'Square') {
      type = 'Circle'
      geometryFunction = ol.interaction.Draw.createRegularPolygon(4)
    } else if (type == 'Box') {
      maxPoints = 2
      geometryFunction = function (coordinates, geometry) {
        if (!geometry) {
          //多边形
          geometry = new ol.geom.Polygon(null)
        }
        var start = coordinates[0]
        var end = coordinates[1]
        geometry.setCoordinates([
          [start, [start[0], end[1]], end, [end[0], start[1]], start],
        ])
        return geometry
      }
      type = 'LineString'
    }
    var draw = new ol.interaction.Draw({
      type,
      source,
      geometryFunction,
      maxPoints,
    })
    if (callback) {
      draw.on('drawend', callback)
    }
    return draw
  }
}
export { Draw }
